package modell;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Id;

@Entity
@Table(name="TB_OBRA")
public class Obra {
	
	public Obra(){}
	


	public Obra(modell.Construtora construtora, String cnpj, int cei,
			String nome, int tempoObra, String situacao, Date periodoInicial,
			Date periodoFinal, Float valorGlobal, Float valorParcelasMes,
			Boolean status, String cep, String endereco, int numero,
			String complemento, String telefone, modell.Cidade cidade,
			String email, String site, Date dataCadastro) {
		super();
		Construtora = construtora;
		Cnpj = cnpj;
		Cei = cei;
		Nome = nome;
		TempoObra = tempoObra;
		Situacao = situacao;
		PeriodoInicial = periodoInicial;
		PeriodoFinal = periodoFinal;
		ValorGlobal = valorGlobal;
		ValorParcelasMes = valorParcelasMes;
		Status = status;
		Cep = cep;
		Endereco = endereco;
		Numero = numero;
		Complemento = complemento;
		Telefone = telefone;
		Cidade = cidade;
		Email = email;
		Site = site;
		DataCadastro = dataCadastro;
	}



	@Id
	@GeneratedValue
	private int Id;
	
	@Column(name="OBR_CEI")
	private int Cei;
	
	@Column(name="CON_CEP", nullable=false)
	private String Cep;
	
	@Column(name="OBR_CNPJ")
	private String Cnpj;
	
	@ManyToOne
	@JoinColumn(name="ID_CONSTRUTORA", nullable=false)
	private Construtora Construtora;
	
	@Column(name="OBR_NOME", nullable=false)
	private String Nome;
	
	@Column(name="OBR_TEMPOOBRA", nullable=false)
	private int TempoObra;
	
	@Column(name="OBR_SITUACAO", nullable=false)
	private String Situacao;
	
	@Column(name="OBR_PERINICIAL", nullable=false)
	private Date PeriodoInicial;
	
	@Column(name="OBR_PERFINAL", nullable=false)
	private Date PeriodoFinal;
	
	@Column(name="OBR_VALGLOBAL")
	private Float ValorGlobal;
	
	@Column(name="OBR_VALPARCMES")
	private Float ValorParcelasMes;
	
	@Column(name = "OBR_STATUS")
	private Boolean Status;
	
	@Column(name="CON_ENDERECO", nullable=false, length=100)
	private String Endereco;
	
	@Column(name="CON_NUMERO", nullable=false)
	private int Numero;
	
	@Column(name="CON_COMPLEMENTO", length=100)
	private String Complemento;
	
	@Column(name="CON_TELEFONE")
	private String Telefone;
	
	@ManyToOne
	@JoinColumn(name="ID_CIDADE", nullable=false)
	private Cidade Cidade;
	
	@Column(name="CON_EMAIL", length=60)
	private String Email;
	
	@Column(name="CON_SITE", length=100)
	private String Site;
	
	@Column(name = "CON_DTCADASTRO", nullable = false)
	private Date DataCadastro;
	
	
	public Boolean getStatus() {
		return Status;
	}
	public void setStatus(Boolean status) {
		Status = status;
	}
	
	public Date getDataCadastro() {
		return DataCadastro;
	}
	public void setDataCadastro(Date dataCadastro) {
		DataCadastro = dataCadastro;
	}
	public Integer getId() {
		return Id;
	}
	public void setId(Integer id) {
		Id = id;
	}
	public Construtora getConstrutora() {
		return Construtora;
	}
	public void setConstrutora(Construtora construtora) {
		Construtora = construtora;
	}
	public String getCnpj() {
		return Cnpj;
	}
	public void setCnpj(String cnpj) {
		Cnpj = cnpj;
	}
	public int getCei() {
		return Cei;
	}
	public void setCei(int cei) {
		Cei = cei;
	}
	public String getNome() {
		return Nome;
	}
	public void setNome(String nome) {
		Nome = nome;
	}
	public int getTempoObra() {
		return TempoObra;
	}
	public void setTempoObra(int tempoObra) {
		TempoObra = tempoObra;
	}
	public String getSituacao() {
		return Situacao;
	}
	public void setSituacao(String situacao) {
		Situacao = situacao;
	}
	public Date getPeriodoInicial() {
		return PeriodoInicial;
	}
	public void setPeriodoInicial(Date periodoInicial) {
		PeriodoInicial = periodoInicial;
	}
	public Date getPeriodoFinal() {
		return PeriodoFinal;
	}
	public void setPeriodoFinal(Date periodoFinal) {
		PeriodoFinal = periodoFinal;
	}
	public Float getValorGlobal() {
		return ValorGlobal;
	}
	public void setValorGlobal(Float valorGlobal) {
		ValorGlobal = valorGlobal;
	}
	public Float getValorParcelasMes() {
		return ValorParcelasMes;
	}
	public void setValorParcelasMes(Float valorParcelasMes) {
		ValorParcelasMes = valorParcelasMes;
	}
	public String getCep() {
		return Cep;
	}

	public void setCep(String cep) {
		Cep = cep;
	}

	public String getEndereco() {
		return Endereco;
	}

	public void setEndereco(String endereco) {
		Endereco = endereco;
	}

	public int getNumero() {
		return Numero;
	}

	public void setNumero(int numero) {
		Numero = numero;
	}

	public String getComplemento() {
		return Complemento;
	}

	public void setComplemento(String complemento) {
		Complemento = complemento;
	}

	public String getTelefone() {
		return Telefone;
	}

	public void setTelefone(String telefone) {
		Telefone = telefone;
	}

	public Cidade getCidade() {
		return Cidade;
	}

	public void setCidade(Cidade cidade) {
		Cidade = cidade;
	}

	public String getEmail() {
		return Email;
	}

	public void setEmail(String email) {
		Email = email;
	}

	public String getSite() {
		return Site;
	}

	public void setSite(String site) {
		Site = site;
	}



	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + Cei;
		result = prime * result + ((Cep == null) ? 0 : Cep.hashCode());
		result = prime * result + ((Cidade == null) ? 0 : Cidade.hashCode());
		result = prime * result + ((Cnpj == null) ? 0 : Cnpj.hashCode());
		result = prime * result
				+ ((Complemento == null) ? 0 : Complemento.hashCode());
		result = prime * result
				+ ((Construtora == null) ? 0 : Construtora.hashCode());
		result = prime * result
				+ ((DataCadastro == null) ? 0 : DataCadastro.hashCode());
		result = prime * result + ((Email == null) ? 0 : Email.hashCode());
		result = prime * result
				+ ((Endereco == null) ? 0 : Endereco.hashCode());
		result = prime * result + Id;
		result = prime * result + ((Nome == null) ? 0 : Nome.hashCode());
		result = prime * result + Numero;
		result = prime * result
				+ ((PeriodoFinal == null) ? 0 : PeriodoFinal.hashCode());
		result = prime * result
				+ ((PeriodoInicial == null) ? 0 : PeriodoInicial.hashCode());
		result = prime * result + ((Site == null) ? 0 : Site.hashCode());
		result = prime * result
				+ ((Situacao == null) ? 0 : Situacao.hashCode());
		result = prime * result + ((Status == null) ? 0 : Status.hashCode());
		result = prime * result
				+ ((Telefone == null) ? 0 : Telefone.hashCode());
		result = prime * result + TempoObra;
		result = prime * result
				+ ((ValorGlobal == null) ? 0 : ValorGlobal.hashCode());
		result = prime
				* result
				+ ((ValorParcelasMes == null) ? 0 : ValorParcelasMes.hashCode());
		return result;
	}



	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Obra other = (Obra) obj;
		if (Cei != other.Cei)
			return false;
		if (Cep == null) {
			if (other.Cep != null)
				return false;
		} else if (!Cep.equals(other.Cep))
			return false;
		if (Cidade == null) {
			if (other.Cidade != null)
				return false;
		} else if (!Cidade.equals(other.Cidade))
			return false;
		if (Cnpj == null) {
			if (other.Cnpj != null)
				return false;
		} else if (!Cnpj.equals(other.Cnpj))
			return false;
		if (Complemento == null) {
			if (other.Complemento != null)
				return false;
		} else if (!Complemento.equals(other.Complemento))
			return false;
		if (Construtora == null) {
			if (other.Construtora != null)
				return false;
		} else if (!Construtora.equals(other.Construtora))
			return false;
		if (DataCadastro == null) {
			if (other.DataCadastro != null)
				return false;
		} else if (!DataCadastro.equals(other.DataCadastro))
			return false;
		if (Email == null) {
			if (other.Email != null)
				return false;
		} else if (!Email.equals(other.Email))
			return false;
		if (Endereco == null) {
			if (other.Endereco != null)
				return false;
		} else if (!Endereco.equals(other.Endereco))
			return false;
		if (Id != other.Id)
			return false;
		if (Nome == null) {
			if (other.Nome != null)
				return false;
		} else if (!Nome.equals(other.Nome))
			return false;
		if (Numero != other.Numero)
			return false;
		if (PeriodoFinal == null) {
			if (other.PeriodoFinal != null)
				return false;
		} else if (!PeriodoFinal.equals(other.PeriodoFinal))
			return false;
		if (PeriodoInicial == null) {
			if (other.PeriodoInicial != null)
				return false;
		} else if (!PeriodoInicial.equals(other.PeriodoInicial))
			return false;
		if (Site == null) {
			if (other.Site != null)
				return false;
		} else if (!Site.equals(other.Site))
			return false;
		if (Situacao == null) {
			if (other.Situacao != null)
				return false;
		} else if (!Situacao.equals(other.Situacao))
			return false;
		if (Status == null) {
			if (other.Status != null)
				return false;
		} else if (!Status.equals(other.Status))
			return false;
		if (Telefone == null) {
			if (other.Telefone != null)
				return false;
		} else if (!Telefone.equals(other.Telefone))
			return false;
		if (TempoObra != other.TempoObra)
			return false;
		if (ValorGlobal == null) {
			if (other.ValorGlobal != null)
				return false;
		} else if (!ValorGlobal.equals(other.ValorGlobal))
			return false;
		if (ValorParcelasMes == null) {
			if (other.ValorParcelasMes != null)
				return false;
		} else if (!ValorParcelasMes.equals(other.ValorParcelasMes))
			return false;
		return true;
	}

	
	
}
